#include <stdio.h>
#include <stdlib.h>
void getMoney();

void returnWindow();

void window();

void changePassworld();

void checkPassworld();

int sysPassworld=184526;//密码

double sysMoney=200.35;//账户余额

int otherCount=0.0;

void panduan(int outmoney){
    if(outmoney>sysMoney)
    {
        printf("***余额不足,取款失败***\n");
        printf("继续（请按1）？ 退卡（请按0）？\n");
        int no=0;
        scanf("%d",&no);
        if(no==1) getMoney();
        else
        {
            printf("欢迎下次使用\n");
            exit(0);
        }
    }
    else
    {
        sysMoney=sysMoney-outmoney;
        printf("成功取出%d，账户余额为%.2lf\n",outmoney,sysMoney);
        returnWindow();
    }
    
}

void returnWindow(){
    printf("返回主界面（输入1）？ 退卡（输入0）？\n");
    int no=0;
    scanf("%d",&no);
    if(no==1) window();
    else
    {
        printf("欢迎下次使用!\n");
        exit(0);
    }
    
}


void getMoney(){
    int pick=0,outmoney=0;
    printf("1-100    2-300\n");
    printf("3-500    4-1000\n");
    printf("5-2000    6-其他金额\n");
    printf("请选择取款金额：");
    scanf("%d",&pick);
    switch(pick){
        case 1:
            outmoney=100;
            panduan(outmoney);
            break;
        case 2:
            outmoney=300;
            panduan(outmoney);
            break;
        case 3:
            outmoney=500;
            panduan(outmoney);
            break;
        case 4:
            outmoney=1000;
            panduan(outmoney);
            break;
        case 5:
            outmoney=2000;
            panduan(outmoney);
            break;
        case 6:
            printf("请输入取款金额(整百)：");
            scanf("%d",&outmoney);
            while(outmoney==0||outmoney%100!=0)
            {
                printf("输入有误，请输入整百!\n");
                printf("请输入取款金额(整百)：");
                scanf("%d",&outmoney);
            }
            panduan(outmoney);
            break;
    }
    
}

void transfoCount(){
    int transMoney=0;
    printf("请输入转账金额:\n");
    scanf("%d",&transMoney);
    if(transMoney>sysMoney)
    {
        printf("余额不足，转账失败！\n");
        returnWindow();
    }
    else
    {
        printf("转账%d成功！账户余额为%.2lf\n",transMoney,sysMoney-transMoney);
        returnWindow();
    }
    
}

void saveMoney(){
    printf("请把钞票整齐放入！\n");
    int inputMoney=0;
    scanf("%d",&inputMoney);
    printf("正在验钞。。。\n");
    printf("您的存款金额为%d元\n",inputMoney);
    printf("交易正在进行中.....\n");
    printf("存款成功，账户余额为%.2lf\n",inputMoney+sysMoney);
    returnWindow();
    
}

void xinPassworld(){
    int newPassworld1=0,newPassworld2=0;
    
    printf("由于你是第一次登入,请设置密码：");
    scanf("%d",&newPassworld1);
    printf("请输入新密码：");
    scanf("%d",&newPassworld2);
    while(newPassworld1!=newPassworld2)
    {
        printf("密码不一致，请重新输入！");
        printf("请输入新密码：");
        scanf("%d",&newPassworld1);
        printf("请再输入新密码：");
        scanf("%d",&newPassworld2);
    }
    sysPassworld=newPassworld2;
    printf("修改密码成功!请重新登录！");
    
}

void changePassworld(){
    int time=0,inPassworld=0;
    printf("请输入原始密码:");
    scanf("%d",&inPassworld);
    time++;
    while(inPassworld!=sysPassworld)
    {
        if(time==3)
        {
            printf("原密码第三次输入错误，你的卡已被冻结！\n");
            exit(0);
        }
        printf("原密码第%d次错误，你还有%d次输入机会!\n",time,3-time);
        printf("请输入原始银行卡密码：");
        scanf("%d",&inPassworld);
        time++;
    }
    printf("密码验证正确！\n");
    xinPassworld();
    printf("\n");
    checkPassworld();
    
}

void check(){
    printf("查询成功，账户余额为%.2lf\n",sysMoney);
    returnWindow();
}

void operFunc(int oper){
    switch(oper)
    {
        case 1:getMoney();break;
        case 2:saveMoney();break;
        case 3:transfoCount();break;
        case 4:changePassworld();break;
        case 5:check();break;
        case 6:exit(0);break;
    }
    
}

void window(){
    int oper=0;
    printf("欢迎进入ATM自动存取款机\n");
    printf("－－－－－－\n");
    printf("1-取款    2-存款\n");
    printf("3-转账    4-改密\n");
    printf("5-查询    6-退卡\n");
    printf("－－－－－－\n");
    printf("请输入操作指令（1-6）：");
    scanf("%d",&oper);
    while(oper<1||oper>6)
    {
        printf("输入指令错误，请重新输入！\n");
        printf("请输入操作指令（1-6）：");
        scanf("%d",&oper);
    }
    operFunc(oper);
}

void checkPassworld(){
    //定义输入的密码变量名
    int inPassworld=0,i; //用while的时候设 times=0;
    printf("－－－欢迎使用ATM机－－－\n");
    printf("请输入银行卡密码：");
    scanf("%d",&inPassworld);
    while(inPassworld<100000||inPassworld>999999)
    {
        printf("错误：请输入六位数密码！\n");
        printf("请输入银行卡密码：");
        scanf("%d",&inPassworld);
    }
    //times++;
    for(i=1;i<=3;i++){
        if(inPassworld!=sysPassworld&&i<3)
        {
            printf("密码第%d次错误，你还有%d次输入机会!\n",i,3-i);
            printf("请输入银行卡密码：");
            scanf("%d",&inPassworld);
        }
        else if(i==3&&inPassworld!=sysPassworld)
        {
            printf("密码第三次输入错误，你的卡已被冻结！\n");
            exit(0);
        }
        else  break;
    }
    printf("恭喜你密码正确！\n");
    window();
    
    /*while(inPassworld!=sysPassworld)
     {
     if(times==3)
     {
     printf("密码第三次输入错误，你的卡已被冻结\n"u5u);
     exit(0);
     }
     printf("密码第%d次错误，你还有%d次输入机会!\n",times,3-times);
     printf("请输入银行卡密码：");
     scanf(“%d”,&inPassworld);
     times++;
     }
     printf("恭喜你密码正确！\n");
     */
}


int main(int argc, const char * argv[])
{
    回家就开会
    checkPassworld();
    
    
    
    return 0;
}

